home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
text
/
dtp
/
loutBin203.lha
/
lout
/
include
/
tab
< prev
next >
Wrap
Text File
|
1993-07-14
|
25KB
|
761 lines
###############################################################################
# #
# Lout @Tab package for formatting tables (Version 2.0) #
# #
# Version 1.0 by Jeffrey H. Kingston, September 1991. #
# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
# #
# See "Tab - A Lout package for formatting tables" for user information. #
# #
###############################################################################
@SysPrependGraphic { tab_prepend }
export @CC @RR @Rule @DoubleRule @Line @DoubleLine @NP
@Rowa @Rowb @Rowc @Rowd @Rowe @Rowf @Rowg @Rowh @Rowi @Rowj
@MarkRowa @MarkRowb @MarkRowc @MarkRowd @MarkRowe @MarkRowf
@MarkRowg @MarkRowh @MarkRowi @MarkRowj
def @Tab
named above { no }
named below { no }
named between { no }
named side { no }
named hmargin { 0.3c }
named vmargin { 0.2v }
named linewidth { 0.5 pt }
named @Fmta
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtb
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtc
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtd
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmte
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtf
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtg
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmth
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmti
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
named @Fmtj
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named "!" precedence 10 left x named between { dft } right y {}
named "!!" precedence 10 left x right y {}
named "!!!" precedence 10 left x right y {}
named "@Over" precedence 11 left x right y { x // y }
named "," precedence 12 left x right y {}
named @Col precedence 12 right x {}
named @CC right x { clines @Break { & x } }
named @RR right x { rlines @Break { & x } }
{}
body @Body
@Begin
macro @NP { /1.1b }
def @CC right x { clines @Break { & x } }
def @RR right x { rlines @Break { & x } }
def @HSingle { linewidth ltabhs }
def @HSingleProject { linewidth ltabhsp }
def @HDouble { linewidth ltabhd }
def @HDoubleBelow { linewidth ltabhdb }
def @HDoubleNW { linewidth ltabhdnw }
def @HDoubleNE { linewidth ltabhdne }
def @HDoubleSW { linewidth ltabhdsw }
def @HDoubleSE { linewidth ltabhdse }
def @VSingle { linewidth ltabvs }
def @VDouble { linewidth ltabvd }
def @VDoubleRight { linewidth ltabvdr }
def @MidHRule
left rule
right x
{
rule @Case
{
no @Yield { @OneCol x }
{ yes single } @Yield { @HSingle @Graphic x }
{ double doubleboxabove } @Yield { @HDouble @Graphic x }
doubleboxbelow @Yield { @HDoubleBelow @Graphic x }
}
}
def @LeftHRule
left rule
right x
{
rule @Case
{
no @Yield { @OneCol x }
{ yes single } @Yield { @HSingleProject @Graphic x }
double @Yield { @HDouble @Graphic x }
doubleboxabove @Yield { @HDoubleNW @Graphic x }
doubleboxbelow @Yield { @HDoubleSW @Graphic x }
}
}
def @RightHRule
left rule
right x
{
rule @Case
{
no @Yield { @OneCol x }
{ yes single } @Yield { @HSingleProject @Graphic x }
double @Yield { @HDouble @Graphic x }
doubleboxabove @Yield { @HDoubleNE @Graphic x }
doubleboxbelow @Yield { @HDoubleSE @Graphic x }
}
}
def @HSRule
left rule
{
rule @Case
{
no @Yield {}
{ yes single } @Yield { @HSingle @Graphic {} }
double @Yield { @HDouble @Graphic {} }
doubleboxabove @Yield { @HDouble @Graphic {} }
doubleboxbelow @Yield { @HDoubleBelow @Graphic {} }
}
}
def @ZeroWidth
right x
{ @OneCol { |0io x |0io }
}
def @Line
{ single @HSRule
}
def @DoubleLine
{ double @HSRule
}
def @Rule
{
@OneRow
{
@ZeroWidth @HSingle @Graphic { ^|hmargin }
/ @Line /
&1rt @ZeroWidth @HSingle @Graphic { |hmargin }
}
}
def @DoubleRule
{
@OneRow
{
@ZeroWidth @HDouble @Graphic { ^|hmargin }
/ @DoubleLine /
&1rt @ZeroWidth @HDouble @Graphic { |hmargin }
}
}
def @VRule
left rule
right x
{
rule @Case
{
no @Yield {}
{ yes single } @Yield @OneRow { /0io @VSingle @Graphic x /0io }
double @Yield @OneRow { /0io @VDouble @Graphic x /0io }
}
}
def @VRuleRight
left rule
right x
{
rule @Case
{
no @Yield {}
{yes single} @Yield @OneRow { /0io @VSingle @Graphic x /0io }
double @Yield @OneRow { /0io @VDoubleRight @Graphic x /0io }
}
}
def @VSRule
left rule
{
rule @Case
{
no @Yield {}
{ yes single } @Yield { @VSingle @Graphic {} }
double @Yield { @VDouble @Graphic {} }
}
}
def @VSRuleRight
left rule
{
rule @Case
{
no @Yield {}
{yes single} @Yield { @VSingle @Graphic {} }
double @Yield { @VDoubleRight @Graphic {} }
}
}
def @Wrap
named ur { no } # Rule up above entry
named dr { no } # Rule down below entry
named vm { vmargin } # Vertical margin
right x # The object to be wrapped
{
ur @HSRule
^/vm @OneCol @OneRow x
/vm dr @HSRule
}
def @Sep
left x
named ur { no } # Rule up above entry
named dr { no } # Rule down below entry
named sr { no } # Rule separating x from y
named hm { hmargin } # Horizontal margin
named vm { vmargin } # Vertical margin
right y
{
def vr
{
sr @Case
{ dft @Yield between
else @Yield sr
}
}
x | @OneCol
{ ur @MidHRule {|hm}
/vm
/vm dr @MidHRule {|hm}
}
| @OneCol
{ vr @VRule { /vm } | ur @MidHRule {|hm}
/vm vr @VSRule |
/vm vr @VRule {^/vm } | dr @MidHRule {|hm}
}
| y
}
def @NSep
left x
named hm { hmargin }
right y
{
x | @OneCol { |hm } | @OneCol { |hm } | y
}
def @LeftEdge
named ur { no } # Rule up above entry
named dr { no } # Rule down below entry
named sr { no } # Rule separating x from y
named hm { hmargin } # Horizontal margin
named vm { vmargin } # Vertical margin
right x
{
sr @Case
{
no @Yield { x }
else @Yield
{ @OneCol
{
sr @VRule { /vm } | ur @LeftHRule { |hm }
^/vm sr @VSRule |
/vm sr @VRule { ^/vm } | dr @LeftHRule { |hm }
}
| x
}
}
}
def @RightEdge
left x
named ur { no } # Rule up above entry
named dr { no } # Rule down below entry
named sr { no } # Rule separating x from y
named hm { hmargin } # Horizontal margin
named vm { vmargin } # Vertical margin
{
sr @Case
{
no @Yield { x }
else @Yield
{
x | @OneCol
{
ur @RightHRule { |hm }
/vm
/vm dr @RightHRule { |hm }
}
| @OneCol
{
sr @VRuleRight { /vm }
/vm sr @VSRuleRight
/vm sr @VRuleRight { ^/vm }
}
}
}
}
def @DoRowa
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmta
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowb
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtb
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowc
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtc
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowd
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtd
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowe
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmte
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowf
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtf
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowg
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtg
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowh
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmth
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowi
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmti
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
def @DoRowj
named A {} named B {} named C {} named D {} named E {}
named F {} named G {} named H {} named I {} named J {}
named K {} named L {} named M {} named N {} named O {}
named P {} named Q {} named R {} named S {} named T {}
named U {} named V {} named W {} named X {} named Y {}
named Z {}
named above { above }
named below { below }
named side { side }
named vmargin { vmargin }
{
@LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
@Fmtj
A { A } B { B } C { C } D { D } E { E }
F { F } G { G } H { H } I { I } J { J }
K { K } L { L } M { M } N { N } O { O }
P { P } Q { Q } R { R } S { S } T { T }
U { U } V { V } W { W } X { X } Y { Y }
Z { Z }
@Col { @Wrap ur {above} dr {below} vm {vmargin} x}
! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
!! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
!!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
, { x @NSep y }
@RightEdge ur { above } dr { below } sr { side } vm { vmargin }
}
macro @Rowa { / @DoRowa }
macro @Rowb { / @DoRowb }
macro @Rowc { / @DoRowc }
macro @Rowd { / @DoRowd }
macro @Rowe { / @DoRowe }
macro @Rowf { / @DoRowf }
macro @Rowg { / @DoRowg }
macro @Rowh { / @DoRowh }
macro @Rowi { / @DoRowi }
macro @Rowj { / @DoRowj }
macro @MarkRowa { ^/ @DoRowa }
macro @MarkRowb { ^/ @DoRowb }
macro @MarkRowc { ^/ @DoRowc }
macro @MarkRowd { ^/ @DoRowd }
macro @MarkRowe { ^/ @DoRowe }
macro @MarkRowf { ^/ @DoRowf }
macro @MarkRowg { ^/ @DoRowg }
macro @MarkRowh { ^/ @DoRowh }
macro @MarkRowi { ^/ @DoRowi }
macro @MarkRowj { ^/ @DoRowj }
@Body
@End @Tab